home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / redakcyjne / programy / Tlen 6.0.1.12 pl / tleninst60112.exe / sdk / TlenSources / plugin / plugin_menu.h < prev    next >
C/C++ Source or Header  |  2006-08-30  |  18KB  |  375 lines

  1. #ifndef plugin_menuH
  2. #define plugin_menuH
  3.  
  4. #include <windows.h>
  5.  
  6. #include "sl_struct.h"
  7. #include "cl_struct.h"
  8. #include "plugin_skin.h"
  9.  
  10. //-----------------------------------------------------------------------------------------------
  11. //STRUKTURY
  12. //-----------------------------------------------------------------------------------------------
  13.  
  14. //-----------------------------------------------------------------------------------------------
  15. //Pozycja menu
  16. //-----------------------------------------------------------------------------------------------
  17.  
  18. typedef struct {
  19.  
  20.     int structSize;         //rozmiar struktury w bajtach
  21.  
  22.     char *Item_ID;          //ID danej pozycji
  23.     char *Parent_ID;        //Je£li tutaj bΩdzie jaka£ warto£µ, to dana pozycja zostanie wstawiona jako child (submenu)
  24.     char *Menu_ID;          //ID menu do kt≤rego przypisana jest ta pozycja
  25.  
  26.     char *Caption;          //wy£wietlana nazwa pozycji w menu
  27.     HANDLE ItemHandle;      //wskaƒnik TMenuItem * danej pozycji
  28.  
  29.     int Flags;              //Flagi
  30.  
  31.     int Position;           //Pozycja w menu, im wy┐sza liczba, tym ni┐ej znajduje siΩ dany element
  32.  
  33.     TlenSingleImageDef Icon;    //Ikonka dla danej pozycji
  34.     int IconIndex;          //je£li Icon jest NULL, i IconIndex > 0, to przypisywana jest ikona o indeksie IconIndex - 1
  35.                                 //je£li ikonka dodawana jest przez Icon, to IconIndex jest updatowane po dodaniu pozycji menu
  36.  
  37.     TLENFUNCTION CallBack;    //funkcja callback dla danej pozycji - wywo│ywana po jej klikniΩciu
  38.                                 //WPARAM: TlenMenuItemDefinition *
  39.                                 //LPARAM: MenuPopupInfo *
  40.  
  41.     DWORD HotKey;           //skr≤t klawiszowy, taki sam jak lParam z WM_HOTKEY
  42.                               //(0, gdy bez skr≤tu)
  43.  
  44.     HINSTANCE ModuleHandle; //Uchwyt dll'a pluginu
  45.  
  46.     void *OwnerData;        //dowolny wskaƒnik
  47.  
  48. } TlenMenuItemDefinition;
  49.  
  50. //-----------------------------------------------------------------------------------------------
  51. //Informacja dotycz╣ca pokazywanego menu
  52. //-----------------------------------------------------------------------------------------------
  53.  
  54. typedef struct {
  55.  
  56.     int structSize;                 //rozmiar struktury w bajtach
  57.  
  58.     POINT point;                    //punkt w kt≤rym pokazywane jest menu
  59.  
  60.     char *Menu_ID;                  //ID pokazywanego menu
  61.     char *Location_ID;              //Lokalizacja pokazywanego menu
  62.  
  63.     DWORD HotKey;                    //Je£li zosta│ wci£niΩty klawisz na li£cie kontakt≤w, to tutaj jest jego kod
  64.  
  65.     ContactsListDef Contacts;       //Kontakty, kt≤re zosta│y zaznaczone przed wybraniem menu
  66.  
  67.     StringListDef MenuItemsToShow;  //to wype│niaj╣ modu│y wpisuj╣c pozycje menu,
  68.                                         //kt≤re chc╣ pokazaµ przy menu zale┐nym od kontaktu
  69.  
  70.     TLENFUNCTION CallBackFunc;      //funkcja zostanie wywo│ana po wszystkich manipulacjach na menu, je£li wywo│uj╣cy
  71.                                         //modu│ chce ukryµ lub pokazaµ jak╣£ pozycjΩ, to w tym w│a£nie miejscu mo┐e to uczyniµ
  72.                                         //LPARAM - MenuPopupInfo *
  73.  
  74.     void *OwnerData;                //Dowolny wskaƒnik
  75.  
  76.     ContactsListDef SubContacts;       // kontakty, ktorych menu bedzie wyswietlane w podmenu
  77.  
  78.  
  79. } MenuPopupInfo;
  80.  
  81. //-----------------------------------------------------------------------------------------------
  82. //Informacja dotycz╣ca klikniΩtej pozycji
  83. //-----------------------------------------------------------------------------------------------
  84.  
  85. typedef struct {
  86.  
  87.     int structSize;                 //rozmiar struktury w bajtach
  88.  
  89.     TlenMenuItemDefinition *item;   //klikniΩta pozycja
  90.     MenuPopupInfo *menu;            //wy£wietlone menu
  91.  
  92. } MenuItemClickedDef;
  93.  
  94. //-----------------------------------------------------------------------------------------------
  95. //FUNKCJE
  96. //-----------------------------------------------------------------------------------------------
  97.  
  98. //Dodaje pozycje w menu
  99. //WPARAM - TlenMenuItemDefinition *
  100. //Zwraca ItemHandle
  101. #define TLEN_ADD_MENU_ITEM              "Tlen/AddMenuItem"
  102.  
  103. //Kasuje pozycjΩ menu
  104. //WPARAM - ItemHandle do skasowania
  105. #define TLEN_DELETE_MENU_ITEM           "Tlen/DeleteMenuItem"
  106.  
  107. //Kasuje dzieci pozycji menu
  108. //WPARAM - char *ItemID
  109. #define TLEN_DELETE_MENU_CHILDREN       "Tlen/DeleteMenuChildren"
  110.  
  111. //Zmienia w│a£ciwo£ci pozycji menu
  112. //WPARAM - ItemHandle, LPARAM - TlenMenuItemDefinition *
  113. #define TLEN_CHANGE_MENU_ITEM           "Tlen/ChangeMenuItem"
  114.  
  115. //Szuka pozycji menu
  116. //WPARAM - TlenMenuItemDefinition *
  117. //Zwraca TlenMenuItemDefinition * lub null
  118. #define TLEN_FIND_MENU_ITEM             "Tlen/FindMenuItem"
  119.  
  120. //Dodaje callback do menu
  121. //WPARAM - (char *) MenuID, LPARAM - (TLENFUNCTION) CallBackFunc
  122. #define TLEN_ADD_MENU_CALLBACK          "Tlen/AddMenuCallBack"
  123.  
  124. //Usuwa callback z menu
  125. //WPARAM - (char *) MenuID, LPARAM - (TLENFUNCTION) CallBackFunc
  126. #define TLEN_REMOVE_MENU_CALLBACK       "Tlen/RemoveMenuCallBack"
  127.  
  128. //Przy wywo│aniach funkcji callback:
  129. //WPARAM - kod zdarzenia
  130.  
  131. //przed pokazaniem menu, tutaj pluginy moga dodac nowe pozycje, zmienic lub usunac jakies stworzone przez tlen
  132. //LPARAM - MenuPopupInfo *
  133. #define TLEN_MENU_CALLBACK_BEFORE_POPUP         1
  134. //po kliknieciu kazdej pozycji menu
  135. //LPARAM - MenuItemClickedDef *
  136. #define TLEN_MENU_CALLBACK_ITEM_CLICKED         2
  137. //tu plugin/modul musi dodac do stringlisty (->MenuItemsToShow) pozycje, ktore chce, zeby byly widoczne w menu
  138. //LPARAM - MenuPopupInfo *
  139. #define TLEN_MENU_CALLBACK_CHOOSE_VISIBLE       3
  140. //wywolywane w module pokazujacym menu tuz przed jego wyswietleniem
  141. //ostatnia szansa na ukrycie/pokazanie okreslonych pozycji
  142. //LPARAM - MenuPopupInfo *
  143. #define TLEN_MENU_CALLBACK_LAST_CHANGE          4
  144.  
  145.  
  146. //-----------------------------------------------------------------------------------------------
  147. //STAúE
  148. //-----------------------------------------------------------------------------------------------
  149. //Typy menu
  150. #define TLEN_MENU_TYPE_CONTACT_INDEPENDENT      1       //niezale┐ne od kontaktu (np menu g│≤wne)
  151. #define TLEN_MENU_TYPE_CONTACT_DEPENDENT        2       //zale┐ne od kontaktu (np menu listy kontakt≤w)
  152.  
  153. //Lokalizacja menu
  154. #define TLEN_MENULOCATION_MAINMENUBUTTON        "Tlen/MainMenuButton"
  155. #define TLEN_MENULOCATION_STATUSBUTTONSBAR      "Tlen/StatusButtonsBar"
  156. #define TLEN_MENULOCATION_SYSTRAY               "Tlen/SysTray"
  157. #define TLEN_MENULOCATION_CONTACTLIST           "Tlen/ContactList"
  158. #define TLEN_MENULOCATION_CHATWINDOW            "Tlen/ChatWindow"
  159. #define TLEN_MENULOCATION_AUTHREQUEST           "Tlen/AuthRequest"
  160. #define TLEN_MENULOCATION_TLENSEARCH            "Tlen/TlenSearch"
  161. #define TLEN_MENULOCATION_CHATOCCUPANTS         "Tlen/ChatOccupant"
  162. #define TLEN_MENULOCATION_PRIVATECHAT           "Tlen/PrivateChat"
  163. #define TLEN_MENULOCATION_CONTACTLIST_METAGROUP "Tlen/ContactListMetaGroup"
  164.  
  165. //Identyfikatory menu u┐ywanych w tlenie
  166. #define TLEN_MENUID_MAIN                        "Tlen/Main"
  167. #define TLEN_MENUID_CL_ELEMENT                  "Tlen/CL/Element"
  168. #define TLEN_MENUID_CL_GROUP                    "Tlen/CL/Group"
  169. #define TLEN_MENUID_CL_METAGROUP                "Tlen/CL/MetaGroup"
  170. #define TLEN_MENUID_CL_SECTION                  "Tlen/CL/Section"
  171. #define TLEN_MENUID_STATUS                      "Tlen/Status"
  172. #define TLEN_MENUID_CHATSTYLES                  "Tlen/ChatStyles"
  173. #define TLEN_MENUID_CHATROOMS                   "Tlen/ChatRooms"
  174. #define GG_MENUID_STATUS                        "GG/Status"
  175.  
  176. //Flagi Menu Item
  177. #define TMI_GRAYED      0x00000001
  178. #define TMI_CHECKED     0x00000002
  179. #define TMI_HIDDEN      0x00000004
  180. #define TMI_AUTOCHECK   0x00000008
  181.  
  182. //flagi wskazuj╣ce co zmodyfikowaµ (przy wywo│aniu modyfikacji)
  183. #define TMIM_CAPTION          0x10000000
  184. #define TMIM_FLAGS         0x20000000
  185. #define TMIM_ICON          0x40000000
  186. #define TMIM_HOTKEY        0x80000000
  187. #define TMIM_ALL           0xF0000000
  188. #define TMIM_ICON_REPLACE  0x01000000
  189.  
  190.  
  191. //Po czym wyszukiwac dany item:
  192. #define TMIS_ITEMID     0x00100000
  193. #define TMIS_MENUID     0x00200000
  194. #define TMIS_CAPTION    0x00400000
  195. #define TMIS_POSITION   0x00800000
  196. #define TMIS_ALL        0x00F00000
  197.  
  198. //pozycje w menu tlenu:
  199.  
  200. #define MI_SEPARATOR                    "Separator"
  201.  
  202. #define MI_MAIN_MESSAGE                 "Tlen/Main/Message"
  203. #define MI_MAIN_CHAT                    "Tlen/Main/Chat"
  204. #define MI_MAIN_CONFERENCE              "Tlen/Main/Conference"
  205. #define MI_MAIN_CHATS                   "Tlen/Main/Chats"
  206. #define MI_MAIN_SMSSEND                 "Tlen/Main/SMSSend"
  207. #define MI_MAIN_SMSOUTBOX               "Tlen/Main/SMSOutbox"
  208. #define MI_MAIN_SMSNOTIFIER             "Tlen/Main/SMSNotifier"
  209. #define MI_MAIN_PHONES                  "Tlen/Main/Phones"
  210. #define MI_MAIN_SEARCH                  "Tlen/Main/Search"
  211. #define MI_MAIN_SEARCHTLEN              "Tlen/Main/SearchTlen"
  212. #define MI_MAIN_SEARCHGG                "Tlen/Main/SearchGG"
  213. #define MI_MAIN_SEARCHMYDATA            "Tlen/Main/SearchMyData"
  214. #define MI_MAIN_ADDCONTACT              "Tlen/Main/AddContact"
  215. #define MI_MAIN_ADDGROUP                "Tlen/Main/AddGroup"
  216. #define MI_MAIN_OPTIONSGGUSERS          "Tlen/Main/OptionsGGUsers"
  217. #define MI_MAIN_ARCHIVE                 "Tlen/Main/Archive"
  218. #define MI_MAIN_OPTIONS                 "Tlen/Main/Options"
  219. #define MI_MAIN_SKINPREVIEW             "Tlen/Main/SkinPreview"
  220. #define MI_MAIN_MYPROFILES              "Tlen/Main/MyProfiles"
  221. #define MI_MAIN_PROFILE                 "Tlen/Main/Profile"
  222. #define MI_MAIN_ADDPROFILE              "Tlen/Main/AddProfile"
  223. #define MI_MAIN_LOGOUTPROFILE           "Tlen/Main/LogoutProfile"
  224. #define MI_MAIN_NOTIFYFRIEND            "Tlen/Main/NotifyFriend"
  225. #define MI_MAIN_IMPEX                   "Tlen/Main/ImpEx"
  226. #define MI_MAIN_EXIT                    "Tlen/Main/Exit"
  227.  
  228. #define MI_CONTACT_MESSAGE              "Tlen/Contact/Message"
  229. #define MI_CONTACT_CHAT                 "Tlen/Contact/Chat"
  230. #define MI_CONTACT_CONFERENCE           "Tlen/Contact/Conference"
  231. #define MI_CONTACT_VOICECHAT            "Tlen/Contact/VoiceChat"
  232. #define MI_CONTACT_SMSSEND              "Tlen/Contact/SMSSend"
  233. #define MI_CONTACT_FILESEND             "Tlen/Contact/FileSend"
  234. #define MI_CONTACT_MAILSEND             "Tlen/Contact/MailSend"
  235. #define MI_CONTACT_PICTURESEND          "Tlen/Contact/PictureSend"
  236. #define MI_CONTACT_PS_OPEN              "Tlen/Contact/PictureSend/Open"
  237. #define MI_CONTACT_PS_LAST              "Tlen/Contact/PictureSend/Last"
  238. #define MI_CONTACT_PS_CLEARLAST         "Tlen/Contact/PictureSend/ClearLast"
  239. #define MI_CONTACT_VCARD                "Tlen/Contact/VCard"
  240. #define MI_CONTACT_ARCHIVE              "Tlen/Contact/Archive"
  241. #define MI_CONTACT_COPYDES              "Tlen/Contact/CopyDescription"
  242. #define MI_CONTACT_ADDCONTACT           "Tlen/Contact/AddContact"
  243. #define MI_CONTACT_EDITCONTACT          "Tlen/Contact/EditContact"
  244. #define MI_CONTACT_DELETECONTACT        "Tlen/Contact/DeleteContact"
  245. #define MI_CONTACT_BLOCK                "Tlen/Contact/Block"
  246. #define MI_CONTACT_UNBLOCK              "Tlen/Contact/Unblock"
  247. //czatowe
  248. #define MI_CONTACT_SETRIGHTS            "Tlen/Contact/SetRights"
  249. #define MI_CONTACT_IGNORE               "Tlen/Contact/Ignore"
  250.  
  251. // subkontakty
  252. #define MI_CONTACT_SUBCONTACT1          "Tlen/Contact/SubContact1"
  253. #define MI_CONTACT_SUBCONTACT2          "Tlen/Contact/SubContact2"
  254. #define MI_CONTACT_SUBCONTACT3          "Tlen/Contact/SubContact3"
  255. #define MI_CONTACT_SUBCONTACT4          "Tlen/Contact/SubContact4"
  256.  
  257. #define MI_GROUP_CHANGEGROUPNAME        "Tlen/Group/ChangeGroupName"
  258. #define MI_GROUP_DELETEGROUP            "Tlen/Group/DeleteGroup"
  259. #define MI_METAGROUP_CHANGEMETAGROUPNAME        "Tlen/MetaGroup/ChangeMetaGroupName"
  260. #define MI_METAGROUP_DELETEMETAGROUP            "Tlen/MetaGroup/DeleteMetaGroup"
  261.  
  262. #define MI_TLENSTATUS_ONLINE            "Tlen/Status/Online"
  263. #define MI_TLENSTATUS_CHAT              "Tlen/Status/Chat"
  264. #define MI_TLENSTATUS_DND               "Tlen/Status/DND"
  265. #define MI_TLENSTATUS_AWAY              "Tlen/Status/Away"
  266. #define MI_TLENSTATUS_XA                "Tlen/Status/XA"
  267. #define MI_TLENSTATUS_INVISIBLE         "Tlen/Status/Invisible"
  268. #define MI_TLENSTATUS_OFFLINE           "Tlen/Status/Offline"
  269. #define MI_TLENSTATUS_DESCSTATUS        "Tlen/Status/DescStatus"
  270. #define MI_TLENSTATUS_DESCSTATUSITEM    "Tlen/Status/DescStatusItem"
  271. #define MI_TLENSTATUS_DESCSTATUSCUST    "Tlen/Status/DescStatusCust"
  272. #define MI_TLENSTATUS_EXIT              "Tlen/Status/Exit"
  273.  
  274. #define MI_GGSTATUS_ONLINE              "GG/Status/Online"
  275. #define MI_GGSTATUS_AWAY                "GG/Status/Away"
  276. #define MI_GGSTATUS_INVISIBLE           "GG/Status/Invisible"
  277. #define MI_GGSTATUS_OFFLINE             "GG/Status/Offline"
  278. #define MI_GGSTATUS_ONLYFRIENDS         "GG/Status/OnlyFriends"
  279. #define MI_GGSTATUS_DESCSTATUS          "GG/Status/DescStatus"
  280. #define MI_GGSTATUS_DESCSTATUSITEM      "GG/Status/DescStatusItem"
  281. #define MI_GGSTATUS_DESCSTATUSCUST      "GG/Status/DescStatusCust"
  282. #define MI_GGSTATUS_EXIT                "GG/Status/Exit"
  283.  
  284. #define MI_CHATSTYLES_STYLE             "Tlen/ChatStyles/Style"
  285. #define MI_CHATSTYLES_CHATOPTIONS       "Tlen/ChatStyles/ChatOptions"
  286.  
  287. #define MI_CHATROOMS_DELETEFAVORITE     "Tlen/ChatRooms/DeleteFavorite"
  288.  
  289. //kolejnosc poszczegolnych pozycji menu
  290. #define MI_POS_MAIN_MESSAGE                     10000
  291. #define MI_POS_MAIN_CHAT                        10100
  292. #define MI_POS_MAIN_CONFERENCE                  10200
  293. #define MI_POS_MAIN_CHATS                       10300
  294. #define MI_POS_MAIN_SMSSEND                     100000
  295. #define MI_POS_MAIN_SMSOUTBOX                   100100
  296. #define MI_POS_MAIN_SMSNOTIFIER                 100200
  297. #define MI_POS_MAIN_PHONES                      100300
  298. #define MI_POS_MAIN_VCARD                       200000
  299. #define MI_POS_MAIN_SEARCH                      300000
  300. #define MI_POS_MAIN_SEARCHTLEN                  10000
  301. #define MI_POS_MAIN_SEARCHGG                    10100
  302. #define MI_POS_MAIN_SEARCHMYDATA                100000
  303. #define MI_POS_MAIN_ADDCONTACT                  300100
  304. #define MI_POS_MAIN_ADDGROUP                    300200
  305. #define MI_POS_MAIN_OPTIONSGGUSERS              400000
  306. #define MI_POS_MAIN_ARCHIVE                     500000
  307. #define MI_POS_MAIN_OPTIONS                     600000
  308. #define MI_POS_MAIN_SKINPREVIEW                 600100
  309. #define MI_POS_MAIN_MYPLANS                     700000
  310. #define MI_POS_MAIN_MYPROFILES                  800000
  311. #define MI_POS_MAIN_ADDPROFILE                  800100
  312. #define MI_POS_MAIN_LOGOUTPROFILE               800200
  313. #define MI_POS_MAIN_NOTIFYFRIEND                900000
  314. #define MI_POS_MAIN_IMPEX                       900100
  315. #define MI_POS_MAIN_EXIT                        1000000
  316.  
  317. #define MI_POS_CONTACT_MESSAGE                  10000
  318. #define MI_POS_CONTACT_CHAT                     10100
  319. #define MI_POS_CONTACT_CONFERENCE               10200
  320. #define MI_POS_CONTACT_VOICECHAT                10300
  321. #define MI_POS_CONTACT_SMSSEND                  100000
  322. #define MI_POS_CONTACT_FILESEND                 100100
  323. #define MI_POS_CONTACT_MAILSEND                 100200
  324. #define MI_POS_CONTACT_PICTURESEND              100300
  325. #define MI_POS_CONTACT_PS_OPEN                  100
  326. #define MI_POS_CONTACT_PS_LAST                  10000
  327. #define MI_POS_CONTACT_PS_CLEARLAST             100000
  328. #define MI_POS_CONTACT_VCARD                    200000
  329. #define MI_POS_CONTACT_ARCHIVE                  200100
  330. #define MI_POS_CONTACT_COPYDES                  200200
  331. #define MI_POS_CONTACT_ADDCONTACT               300000
  332. #define MI_POS_CONTACT_EDITCONTACT              300100
  333. #define MI_POS_CONTACT_DELETECONTACT            300200
  334. #define MI_POS_CONTACT_BLOCK                    400000
  335. #define MI_POS_CONTACT_UNBLOCK                  400100
  336. #define MI_POS_CONTACT_IGNORE                   500100
  337. #define MI_POS_CONTACT_SETRIGHTS                500200
  338. #define MI_POS_CONTACT_SUBCONTACT1              500300
  339. #define MI_POS_CONTACT_SUBCONTACT2              500400
  340. #define MI_POS_CONTACT_SUBCONTACT3              500500
  341. #define MI_POS_CONTACT_SUBCONTACT4              500600
  342. #define MI_POS_CONTACT_CHANGEMETAGROUPNAME      500700
  343. #define MI_POS_CONTACT_DELETEMETAGROUP          500800
  344.  
  345.  
  346. #define MI_POS_GROUP_CHANGEGROUPNAME            10000
  347. #define MI_POS_GROUP_DELETEGROUP                10100
  348. #define MI_POS_METAGROUP_CHANGEMETAGROUPNAME    10000
  349. #define MI_POS_METAGROUP_DELETEMETAGROUP        10100
  350.  
  351. #define MI_POS_TLENSTATUS_ONLINE                10000
  352. #define MI_POS_TLENSTATUS_CHAT                  10100
  353. #define MI_POS_TLENSTATUS_DND                   10200
  354. #define MI_POS_TLENSTATUS_AWAY                  10300
  355. #define MI_POS_TLENSTATUS_XA                    10400
  356. #define MI_POS_TLENSTATUS_INVISIBLE             10500
  357. #define MI_POS_TLENSTATUS_OFFLINE               10600
  358. #define MI_POS_TLENSTATUS_DESCSTATUS            40050
  359. #define MI_POS_TLENSTATUS_DESCSTATUSCUST        40100
  360. #define MI_POS_TLENSTATUS_EXIT                  1000000
  361.  
  362. #define MI_POS_GGSTATUS_ONLINE                  30000
  363. #define MI_POS_GGSTATUS_AWAY                    30100
  364. #define MI_POS_GGSTATUS_INVISIBLE               30200
  365. #define MI_POS_GGSTATUS_OFFLINE                 30300
  366. #define MI_POS_GGSTATUS_ONLYFRIENDS             40000
  367. #define MI_POS_GGSTATUS_DESCSTATUS              100050
  368. #define MI_POS_GGSTATUS_DESCSTATUSCUST          100100
  369. #define MI_POS_GGSTATUS_EXIT                    1000000
  370.  
  371. #define MI_POS_CHATSTYLES_CHATOPTIONS           100000
  372. //-----------------------------------------------------------------------------------------------
  373.  
  374. #endif
  375.